<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>冒泡排序</title>
    <style>
        a {
            display: block; /* 转换显示模式 */
            width: 200px; /* 盒子宽高 */
            height: 100px;
            margin: 0 auto; /* 版心居中 */
        }
    </style>
</head>
<body>

<a href="https://www.bilibili.com/video/BV1Y84y1L7Nn?p=49&vd_source=cb928a955f1123af004a2e3158113ea7">
    冒泡排序-说明视频
</a>

<!--冒泡排序 演示-->
<script>
    let 数组 = [2, 4, 3, 5, 1, 6]
    let 临时存储 = 0

    // 外层循环
    for (let i = 0; i < 数组.length - 1; i++) {
        // 内层循环
        for (let p = 0; p < 数组.length - i - 1; p++) {
            // 降序 < , 升序 >
            if (数组[p] < 数组[p + 1]) { // 判断2个相邻元素大小
                临时存储 = 数组[p] // 满足条件,交换2个元素的值
                数组[p] = 数组[p + 1]
                数组[p + 1] = 临时存储
            }
        }
    }
    console.log(`排列后的数组: ${数组}`) // 输出控制台看信息,是否排序完成

    // 最简便的方法使用 函数
    let 数组2 = [2, 4, 3, 5, 1, 6]
    // 这个 sort 函数直接可以升序排列
    数组2.sort()
    console.log(`数组sort方法升序排列: ${数组2}`) // 输出控制台看信息,是否排序完成

    // sort() 降序写法
    数组2.sort(function (a, b) {
        return b - a  // 数组降序排列
        // return a - b  // 数组降序排列, 不过这个是函数默认 所以可以不写
    })
    console.log(`数组sort方法降序排列: ${数组2}`)


    /* 以上是教程的, 我额外在写一个排序 更加的笨~~~  方法是第一个元素依次与其他元素比较,然后第2个元素在依次比较*/

    // 定义数组和临时变量
    let 数组A = [12, 14, 13, 15, 11, 16]
    let 临时 = 0
    // 外部循环
    for (let 下标 = 0; 下标 < 数组A.length; 下标++) {
        let 下标增值 = 1  // 这个变量是为了增加下标, 初始化是 1

        for (let p = 下标; p < 数组A.length - 1; p++) {
            // 和上面的教程案例不一样的是, 我们要的是外层循环的那个变量

            if (数组A[下标] < 数组A[下标 + 下标增值]) { // 降序 < , 升序 >

                临时 = 数组A[下标] // 交换2个数组元素的值
                数组A[下标] = 数组A[下标 + 下标增值]
                数组A[下标 + 下标增值] = 临时

            }
            下标增值++ // 每次循环 下标增值+1
        }
    }
    console.log(`我自己编写的排序算法,排序的数组: ${数组A}`)

</script>

</body>
</html>